#ifndef LAYERING_H
#define LAYERING_H

#include "Pile.h"
#include <boost/unordered_map.hpp>

// A set of layers of a pile of items

class ID_Dist {
public:
    int ID;
    double dist;
    ID_Dist(int I, double d) : ID(I), dist(d) {}
};

typedef boost::unordered_map<int, ID_Dist> Antipole_Map;

class Layering {
public:
    Pile *interior_set;  // the "inside" of the cluster
    Pile *extreme_set;   // the "skin" of the cluster
    Pile *medoid;        // the "core" of the cluster.
    Antipole_Map antipoles; // maps each obj to its most distant extreme obj
};

#endif
